アカウントの棚卸の作業をちょっとでも楽できるようなツールを試作してみた
前置き(長い
定期的に所属部署で使用している外部サービスのユーザーアカウント棚卸を行っています。
対象は社内ユーザーですが、各サービスからユーザーアカウント一覧を取得し、まとめていく作業はサービスやアカウントの数が増えれば増えるほど 棚卸の難易度は上がっていってしまいます。
具体的には以下の課題がありました。
- そもそも棚卸をあまりやっていない
作りっぱなしで放置されていることが多い。 退職者のアカウントが残り続けている など、セキュリティ的に良くはない。
使用していないのにコスト増の可能性もある。
- アカウント所有者の情報を取得する作業
自動、手動での取得に関わらず、最新の状態との差分を確認するのに時間がかかってしまう。
サービスごとでアカウントのリストを作っていた。
- アカウント所有者ごとに今後の利用可否を確認する作業
アンケートを作成して確認していたが、その作成にも時間かかる。
サービスごとにアンケートを作成していて、たくさんのサービスを利用しているとそれごとに回答するのが面倒になってきてしまう。
こういった課題があるので、なんとかして棚卸のコストを減らす、効率的にアカウント管理ができるようにしようとしています。
外部のサービスにこのような課題を解決してくれるものもありそうですが(いくつかのサービスは発見している)、
Google Apps Scriptで自動化している作業もあったので、既存のリソースを流用した管理サービスを試作して使ってみることにしました。
試作品の内容
所有しているアカウント情報を一元管理し、棚卸後のアカウントの状況を把握しやすくすることが目的のものです。
今回の試作には認証、ホスティング、DBが扱えるFirebaseを使ってみました。
以下の感じの構成だと思ってください。
特に中心となる内容は以下に。
アカウント情報の取り込み
サービスごとのアカウント情報をDBに保存し、その情報から共通のアカウント管理台帳を作成する。
アカウント情報は手動で取得しないといけないサービスもありますので、その場合はスプレッドシートに書き出しすることになっています。
自動で取得できるサービスは時間型のトリガーを使って定期実行する。
アカウントの情報は以下のものを格納しています。
- サービスごとのアカウント情報
- APIやスプレッドシートから取得したアカウント情報をそのまま格納
- 統合管理台帳
- サービスごとのアカウント情報マージし、集約した台帳。
- 同期時に差分があルト、その旨をステータスとして更新する。
※ 退職者のリストも取り込めるように対応するが、DBに格納はせず、統合管理台帳との差分のみ更新する
アカウントの状況の可視化
DBに格納された情報を可視化して、棚卸作業者が状況を把握できるようにしたいので作った。
こんなイメージ。
管理サービス名、アクセス権限などもわかるようにする。
利用継続のアンケート作成と更新
各アカウント所有者に対して継続可否のアンケートを送って、その回答をもとに不要になったアカウントを把握できるようにしたかったので作ってみた。
アンケートはこんなやつ。
回答の確認もWeb上でできるように可視化。
ユーザー個別のアンケートURLを作成し、SlackのDMで送信するようにしている。
実際に使ってみてどうなのか、課題など
- 各サービスのアカウント情報をマージした管理台帳を自動作成、利用継続アンケートの自動作成 でコストは結構軽減された。
- 削除し忘れなどを確認しやすくなった。
管理サービスが増えてもこの点は良いと思われる。
課題は細かいことを挙げるとキリがないですが、
- 棚卸後の各サービスのアカウント情報の削除が試作品ではできないため、ここは人間の手で行う必要がある
APIが提供されているサービスだったら良いが、そうでないものもあるのでどうしようか悩む
- 管理サービスを棚卸担当者側から追加できない
同期できるサービスのプリセットを増やし、画面上から棚卸担当者が取り込む設定をできるようにした方が使いやすいのでは?と思っている。
APIがなくても、どこかのストレージに置いたアカウント情報のjsonファイルを定期的にクロールしてくれたりするといいんじゃないかなと。
※ AWS Glueのクローラーを作成する感じで
将来的にはきっちりとしたサービスとして提供したい。その時はデザイナーやプログラマーに頼んで作ってもらわんとな。